Skip to content

Release v3.1.0#39

Merged
vycdev merged 32 commits into
mainfrom
develop
Jun 18, 2026
Merged

Release v3.1.0#39
vycdev merged 32 commits into
mainfrom
develop

Conversation

@vycdev

@vycdev vycdev commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • Release v3.1.0 from develop to main.
  • Includes orthographic camera mode, experimental Flat Paint mode, desktop update settings, next-best-color filament suggestions, settings dialog updates, and SEO-friendly docs URLs.

Validation

  • npm test
  • npm run lint
  • npm run build
  • npm run test:e2e

Notes

  • CHANGELOG.md currently has the v3.1.0 entry under unreleased; stamp the release date before tagging.

vycdev and others added 30 commits June 1, 2026 13:20
Adds a pill button (top-left, below model dimensions) that switches the
Three.js camera between PerspectiveCamera and OrthographicCamera without
rebuilding the scene. OrbitControls.object is swapped in-place; position
and orientation are preserved across the switch. The resize handler and
auto-framing both branch on camera type.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Lifts isOrtho state to App.tsx and passes it down to both ThreeDView
(to drive switchCamera) and PreviewActions (to render the button).
The toggle is now the first icon-button in the top-right toolbar when
in 3D mode, matching the size="icon" square style of undo/redo/download.
Icon shows Camera in perspective mode and Box in ortho mode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces nextBestColor() which recommends the single most impactful
filament to add, scored by how much it reduces blend-aware reachable
error across all image swatches.

Scoring uses segment geometry in Lab space: each candidate C is evaluated
by the gain from new C↔filament blend lines (distToSegment), not just
direct ΔE. The baseline also accounts for existing filament↔filament
blend lines, so the metric correctly values isolated candidates whose
longer segments sweep previously unreachable regions of Lab space.

Candidate pool is restricted to the p75 most underserved swatches
(by blend-aware reachable error) to reduce O(S² × F) to O(0.25S² × F).

Adds "Suggest next filament" button in AutoPaintTab with a result card
showing hex swatch, recommended TD, improvement %, pixels captured, and
isolation score. "Add to filaments" names the entry Kromacut-Suggestion-NN.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Instead of only testing image swatch colors as candidates, also generate
extrapolated Lab positions by solving blend(C, F, t) = S for each
underserved swatch S and existing filament F at t ∈ {0.3, 0.5, 0.7}.

These candidates represent colors that, when blended with an existing
filament, land exactly on an uncovered swatch — often better than the
swatch color itself because they extend the new C↔F segment further into
uncovered Lab space.

Also adds labToHex (Lab→XYZ→linear RGB→sRGB with gamut clamping) and
deduplicates the candidate pool by hex before scoring.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
labToHex clamps out-of-gamut Lab values (e.g. aggressive t=0.3
extrapolations), so the raw extrapolated Lab and the returned hex could
represent very different colors. Scoring used the raw Lab (scoring a
phantom) while the UI displayed the clamped hex — causing near-black
colors like #080000 to always win regardless of the filament set.

Fix: round-trip all candidates through hex→Lab so scoring and the
coverage threshold always operate on the actual representable color.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When switching perspective→ortho, the ortho camera was created with a
hardcoded far=2000, ignoring any near/far the perspective camera had
accumulated via auto-framing. Switching back ortho→perspective also
left the perspective camera with stale near/far values.

Fix: copy near/far from the active camera onto the incoming camera
before updateProjectionMatrix(), so large models framed in one mode
remain fully visible after toggling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Per repo guidance: adds an unreleased v3.1.0 changelog entry and a
Preview Controls section in 3d-mode.md describing the new
perspective/orthographic toggle button.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add ortho/perspective camera toggle to 3D view
Per repo guidance: adds an unreleased v3.1.0 changelog entry and a
Preview Controls section in 3d-mode.md describing the new
perspective/orthographic toggle button.

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
…detailed result card

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
… suggestions

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
…for p75-underserved swatches

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
…test suite

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Implement camera mode persistence with localStorage
…ristic

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
@vycdev vycdev merged commit dc5a25c into main Jun 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants